<?php

/**
 * @copyright 2011
 * @version $Id$
 * @access public
 * @author oriotiori

 */

class Admin_Model_PdfHandler extends Zend_Db_Table_Abstract{

	protected $_name = 'tripticos';

/**
 * Método para subir archivos y agregar en la DB
 * @param mixed $form Datos provenientes del post
 * @param array $To Array de datos
 * @return int lastInsertId
 */
        public function AddPdfFiles($form, $To=null)
        {

            $ruta=IMAGES_PATH.DS.$To['Directory'].DS.$To['Path'].DS;
            $tabla=TABLE_PREFIX.'files';

           try{
                // Traemos el adapter de Zend_File_Transfer
                $upload = $form->pdf_file->getTransferAdapter();
                $i=0;

                foreach ($upload->getFileInfo() as $info)
                {
                    
                    if(empty($info['name']))
                        continue;


                    //rename file how you like and move it to given destination

                    $ext = $this->_findexts($info['name']);
                    $file = 'pdf_'.$i.'_'. $To['Partname'] .'_'.time().".".$ext;

                    $upload->addFilter('Rename',array('target'=> $ruta.$file,
                                                    'overwrite'=>true));

                    try{
                        $subio=false;
                        $subio=$upload->receive($info['name']);
                        if($subio){
                            try{
                                $data = array(
                                            'File' => $file,
                                            'Extension' => $To['Extension']
                                    );
                                $res = $this->getAdapter()->insert($tabla, $data);
                                return $this->getAdapter()->lastInsertId();
                            }catch(Exception $e)
                            {
                                $error=array($e->getFile(), 'Exception: '.$e->getMessage());
                                $ExceptionHandler= new Default_Model_ExceptionHandler();
                                $ExceptionHandler->saveErrors($error);
                            }
                        }
                        $i++;
                    }catch( Exception $e ) {
                        $error=array($e->getFile(), 'Exception: '.$e->getMessage());
                        $ExceptionHandler= new Default_Model_ExceptionHandler();
                        $ExceptionHandler->saveErrors($error);
                    }
                }
                return false;
                
            }catch( Exception $e ) {
                $error=array($e->getFile(), 'Exception: '.$e->getMessage());
                $ExceptionHandler= new Default_Model_ExceptionHandler();
                $ExceptionHandler->saveErrors($error);
            }
            return false;
        }


/**
 * Método para localizar la extension de un archivo
 * @param string $filename Nombbre del archivo
 * @return string $exts Extension del archivo
 */
        protected function _findexts($filename)
        {
            $filename = strtolower($filename);
            $exts = end(explode(".", $filename)) ;
            return $exts;
        }

/**
 * Elimina una pdf by id
 *  */
    public function deletePdfById($id){
        $table=TABLE_PREFIX."files";
        try{
            $where[]='Id='.$id;

            $this->getAdapter()->delete($table ,$where);
            return true;
        }catch(Exception $e)
        {
            $error=array($e->getFile(), 'Exception: '.$e->getMessage());
            $ExceptionHandler= new Default_Model_ExceptionHandler();
            $ExceptionHandler->saveErrors($error);
        }
        return false;
    }

/**
 * Elimina una archivo real
 *  */
    public function deletePdfByPath($path){
        try{
            unlink($path);
            return true;
        }catch(Exception $e)
        {
            $error=array($e->getFile(), 'Exception: '.$e->getMessage());
            $ExceptionHandler= new Default_Model_ExceptionHandler();
            $ExceptionHandler->saveErrors($error);
        }
        return false;
    }


}
